package top.zuli.package01.class06;

public class MethodDemo1 {
    //Java里方法的参数传递方式只有一种：值传递。 即将实际参数值的副本（复制品）传入方法内，而参数本身不受影响。
    void method1(int i){
        //改变参数值
        i++;
        System.out.println(i);
    }
    //Java里方法的参数传递方式只有一种：值传递。 即将实际参数值的副本（复制品）传入方法内，而参数本身不受影响。
    void method2(User1 user){
        //改变参数的地址
        user = new User1();
        //给新地址重新赋值
        user.id = 2;
        user.name = "李四";
        user.show();
    }

    public static void main(String[] args) {
        //创建对象
        MethodDemo1 methodDemo = new MethodDemo1();
        //将变量i传入method1方法中，是将i的副本传入方法中i的值不受影响
        int i = 5;
        methodDemo.method1(i);
        System.out.println(i);
        //将user对象传入method2方法中，是将user对象的内存地址副本传入方法中
        User1 user = new User1();
        user.id = 1;
        user.name = "张三";
        // method2对传入的副本的地址更改了，对原来地址内容没有影响
        methodDemo.method2(user);
        user.show();

    }
}
class User1 {
    int id;
    String name;
    void show(){
        System.out.println("id:"+id+",name:"+name);
    }
}
